Having (SQL)
Kildeløs: Denne artikkelen mangler kildehenvisninger, og opplysningene i den kan dermed være vanskelige å verifisere. Kildeløst materiale kan bli fjernet. |
En HAVING
-klausul i SQL angir at et SQL SELECT
-uttrykk bare skal returnere rader der samlede verdier oppfyller de angitte betingelser.
Bruk
[rediger | rediger kilde]HAVING
og WHERE
forveksles ofte av nybegynnere, men de har forskjellige formål.
WHERE
tas i betraktning på et tidligere stadium av kjøringen av en spørring, og filtrerer radene som leses fra tabellene. Hvis en spørring inneholderGROUP BY
, blir rader fra tabellene grupperte og samlet.- Etter aggregeringsoperasjonen påføres
HAVING
, og filtrerer ut radene som ikke samsvarer med de angitte betingelsene.
Derfor gjelder WHERE
for data som leses fra tabeller, mens HAVING
bare bør gjelde for aggregerte data som ikke er kjent i den innledende fasen av en spørring.
For å se den nåværende tilstanden dannet av en GROUP BY-
klausul må HAVING
-klausulen brukes.
Eksempler
[rediger | rediger kilde]For å returnere en liste over avdelings-ID-er som solgte for mer enn $1000 på datoen 2020-01-01, sammen med summen av salget på den datoen, kan man skrive følgende spørring:
SELECT DeptID, SUM(SaleAmount)
FROM Sales
WHERE SaleDate = '2000-01-01'
GROUP BY DeptID
HAVING SUM(SaleAmount) > 1000
Følgende spørring vil returnere en liste over avdelinger som har mer enn 1 ansatt:
SELECT DepartmentName, COUNT(*)
FROM Employee
JOIN Department ON Employee.DepartmentID = Department.DepartmentID
GROUP BY DepartmentName
HAVING COUNT(*) > 1;
HAVING
er praktisk, men ikke nødvendig. Et resultat tilsvarende eksempelet over, men uten å bruke HAVING
, kan fås mes følgende kode:
SELECT * FROM (
SELECT DepartmentName AS deptNam, COUNT(*) AS empCount
FROM Employee AS emp
JOIN Department AS dept ON emp.DepartmentID = dept.DepartmentID
GROUP BY deptNam
) AS grp
WHERE grp.empCount > 1;
Eksterne lenker
[rediger | rediger kilde]- The HAVING and GROUP BY SQL clauses Arkivert 3. juni 2011 hos Wayback Machine. Arkivert 2011-06-03 hos Wayback Machine
- SQL Aggregate Functions - W3Schools Arkivert 3. mai 2017 hos Wayback Machine.